23种设计模式--简单工厂模式+【抽象】工厂模式
工厂模式的组合,避免客户端对不同类型的逻辑判断
核心改动
将客户端的判断逻辑放到工厂类中。
需要这种组合的原因
在工厂模式和抽象工厂模式中已经强调过了,在新增数据模型类型时,客户端仍然需要对模型类型进行判断。而我们知道,简单工厂模式能够把客户端的逻辑判断放到工厂类中,所以使用组合方式能够使变动对客户端透明。
如何在工厂类中避免复杂的if判断或switch判断
既然要使用简单工厂方法把客户端的判断放到工厂类中,那么必然会产生大量的if和switch判断,可以使用“注册+反射”的方式避免。
“注册”只在配置文件中注册类名,“反射”是利用jdk的反射机制构建注册的类。
使用配置文件就不存在增加类后会侵入工厂类代码的情况了。
这种方式简化了代码的处理,但是会增加工程部署的复杂性,因此使用者需要trade off。